// [dFilter] - A Numerical Input Mask for JavaScript
// Written By Dwayne Forehand - March 27th, 2003
// Please reuse & redistribute while keeping this notice.

var dFilterStep

function dFilterStrip (dFilterTemp, dFilterMask)
{
    dFilterMask = replace(dFilterMask,'#','');
    for (dFilterStep = 0; dFilterStep < dFilterMask.length++; dFilterStep++)
		{
		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
		}
		return dFilterTemp;
}

function dFilterMax (dFilterMask)
{
 		dFilterTemp = dFilterMask;
    for (dFilterStep = 0; dFilterStep < (dFilterMask.length+1); dFilterStep++)
		{
		 		if (dFilterMask.charAt(dFilterStep)!='#')
				{
		        dFilterTemp = replace(dFilterTemp,dFilterMask.charAt(dFilterStep),'');
				}
		}
		return dFilterTemp.length;
}

function dFilter (key, textbox, dFilterMask)
{
		dFilterNum = dFilterStrip(textbox.value, dFilterMask);
		
		//alert (key);
		if (key==9 || key ==13)
		{
		    return true;
		}
		else if (key==8&&dFilterNum.length!=0)
		{
		 	 	dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
		}
 	  else if ( ((key>47&&key<58)||(key>95&&key<106)) && dFilterNum.length<dFilterMax(dFilterMask) ) 
      { 
      if(key>95&&key<106){key-=48;} 
        dFilterNum=dFilterNum+String.fromCharCode(key); 
      } 

		var dFilterFinal=''; 
		var dFilterFinal1=''; 
		var dFilterFinal2=''; 
		var dFilterFinal3=''; 
	  if (dFilterNum.length >= 2)
	  {
			dFilterFinal = dFilterNum.substring(0,2)
			dFilterFinal = dFilterFinal + "/";
			dFilterFinal1 = dFilterNum.substring(2,dFilterNum.length)
				//alert (dFilterFinal1);
			if (dFilterFinal1.length >= 2)
			{	
				dFilterFinal1 = dFilterFinal1.substring(0,2)
				dFilterFinal1 = dFilterFinal1 + "/";
				dFilterFinal2 = dFilterNum.substring(4,dFilterNum.length)
			}
			textbox.value = dFilterFinal + dFilterFinal1 + dFilterFinal2;
	  }
	  else
	{
		textbox.value = dFilterNum;
	}
		
		//alert (dFilterNum);
		//alert (dFilterMask.length);
    //  var dFilterFinal=''; 
  //  for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)
	//	{
  //      if (dFilterMask.charAt(dFilterStep)=='#')
	//			{
	//				  if (dFilterNum.length!=0)
	//				  {
	//			        dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
	//				      dFilterNum = dFilterNum.substring(1,dFilterNum.length);
	//				  }
	//			    else
	//			    {
	//			        dFilterFinal = dFilterFinal + "";
	//			    }
	//			}
	//	 		else if (dFilterMask.charAt(dFilterStep)!='#' && dFilterNum.length ==2)
	//			{
	//			    dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep); 			
	//			}
	//	    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
	//	}
		
		//if (dFilterFinal.length ==2)
		//{
		//	textbox.value = "";
		//}
		//else
		//{
			
		//}
		
    return false;
}

function replace(fullString,text,by) {
// Replaces text with by in string
    var strLength = fullString.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return fullString;

    var i = fullString.indexOf(text);
    if ((!i) && (text != fullString.substring(0,txtLength))) return fullString;
    if (i == -1) return fullString;

    var newstr = fullString.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(fullString.substring(i+txtLength,strLength),text,by);

    return newstr;
}
